package com.ruoyi.worker.service;


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.worker.domain.*;

import java.util.List;
import java.util.Map;

/**
 * @ProjectName: ruoyi
 * @Package: com.ruoyi.system.service
 * @ClassName: OperationNeedService
 * @Author: 胡志明
 * @Description:
 * @Date: 2021/9/9 20:54
 */
public interface OperationNeedService {

    List<QualityPredictPojo> getQualityPredictList(QualityPredictPojo qualityPredictPojo);

    /**
     * 根据用户id获取用户部门、用户岗位
     * @param userId
     * @return
     */
    QualityPredictPojo viewUserData(Integer userId);

    List<Map<String,Object>> viewTimeShift();

    /**
     * 查询用工需求列表
     * @param operationNeedPojo
     * @return
     */
    List<OperationNeedPojo> getOperationNeedList(OperationNeedPojo operationNeedPojo);

    /**
     * 用工需求新增页面
     * @return
     */
    JSONArray addShowOperationNeed();

    /**
     * 新增用工需求数据
     */
    int addOperationNeed(JSONObject jsonObject);

    /**
     * 删除用工需求数据
     * @param operationNeedId
     */
    void deleteOperationNeed(Integer operationNeedId);

    /**
     * 审核用工需求
     * @param operateNeedVaryPojo
     */
    void auditOperationNeed(OperateNeedVaryPojo operateNeedVaryPojo);

    /**
     * 修改用工需求数据
     * @param jsonObject
     */
    void updateOperationNeed(JSONObject jsonObject);

    /**
     * 用工需求详情展示
     * @param operationNeedId
     * @return
     */
    JSONObject viewOperationNeed(Integer operationNeedId);

    /**
     * 获取渠道人数配置数据
     * @param needTime
     * @return
     */
    List<StaffAssignmentsPojo> getStaffAssignmentsList(String needTime);

    /**
     * 分配渠道人数审核
     * @param staffAssignmentsPojo
     */
    void auditStaffAssignments(StaffAssignmentsPojo staffAssignmentsPojo) throws Exception;

     void setRedisCache(StaffAssignmentsPojo staffAssignmentsPojo) throws Exception;

    /**
     * 删除用工人员分配信息
     * @param staffAssignmentsId
     */
    void deleteStaffAssignments(Integer staffAssignmentsId);

    /**
     * 用工分配详情
     * @param staffAssignmentsId
     * @return
     */
    JSONObject viewStaffAssignments(Integer staffAssignmentsId);

    /**
     * 修改用工分配
     * @param jsonObject
     */
    void updateStaffAssignments(JSONObject jsonObject);

    /**
     * 获取用工需求列表
     * @param workerNeedPojo
     * @return
     */
    List<WorkerNeedPojo> getWorkerNeedList(WorkerNeedPojo workerNeedPojo);

    /**
     * 作废用工需求
     * @param workerNeedId
     */
    void deleteWorkerNeed(Integer workerNeedId);

    /**
     * 审核用工需求
     * @param workerNeedPojo
     */
    void auditWorkerNeed(WorkerNeedPojo workerNeedPojo);

    /**
     * 用工分配详情
     * @param workerNeedId
     * @return
     */
    JSONObject viewWorkerNeed(Integer workerNeedId);

    /**
     * 提交质量预测
     * @param qualityPredictPojo
     */
    void auditQualityPredict(QualityPredictPojo qualityPredictPojo);

    /**
     * 删除质量预测管理
     * @param qualityPredictId
     */
    void deleteQualityPredict(Integer qualityPredictId);

    /**
     * 编辑预测管理
     * @param jsonObject
     */
    void updateQualityPredict(JSONObject jsonObject);

    int addQualityPredict(JSONObject jsonObject);

    void updateWorkerNeed(JSONObject jsonObject);
}
